iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Web 3

Web3新手初探筆記系列 第 18

實作簡易DEX ep.1

  • 分享至 

  • xImage
  •  

主要需要三個公式

  1. 兌換公式
  2. 增加流動性
  3. 減少流動性

採用的是CPMM(恆定乘積造市商),會需要LP token,實作內容不包含手續費,x=代幣x的量,y=代幣y的量,dx=投入代幣x的量,dy=輸出代幣y的量

兌換公式(求dy)

公式:
https://chart.googleapis.com/chart?cht=tx&chl=xy%20%3D%20k
https://chart.googleapis.com/chart?cht=tx&chl=(x%2Bdx)(y-dy)%3Dk
得到:
https://chart.googleapis.com/chart?cht=tx&chl=dy%3D%7By(dx)%5Cover%20x%2Bdx%7D

增加流動性&發行LP token(求s)

LpToken 的總發行量 f(x, y) = sqrt(xy) (為了使獎勵成線性,因此需開根號)
LpToken 初使量 L0 = f(x, y)
LpToken 變化量 L1 = f(x + dx, y + dy)
LpToken 已發行量 T = total shares
LpToken 獎勵量 s = shares to mint
https://chart.googleapis.com/chart?cht=tx&chl=%7BL1%5Cover%20L0%7D%20%3D%20%7BT%20%2B%20s%20%5Cover%20T%7D
https://chart.googleapis.com/chart?cht=tx&chl=L1%20(T)%20%3D%20L0%20(T%20%2B%20s)
得出A:
https://chart.googleapis.com/chart?cht=tx&chl=%20s%20%3D%20%7BT(L1%20-%20L0)%20%5Cover%20L0%20%7D
LP token發行量和流動性呈正比

lp為已發行量,dlp為新增發量
https://chart.googleapis.com/chart?cht=tx&chl=%7Bdlp%5Cover%20lp%7D%20%3D%7Bdx%5Cover%20x%7D%20%3D%7B%20dy%20%5Cover%20y%7D
得出B:
https://chart.googleapis.com/chart?cht=tx&chl=%7B(L1%20-%20L0)%20%5Cover%20L0%7D%20%3D%20%7Bdx%20%5Cover%20x%7D%20%3D%20%7Bdy%20%5Cover%20y%7D%20
則將A和B合併可以得出:
https://chart.googleapis.com/chart?cht=tx&chl=s%3D%20%7Bdx%5Cover%20x%7DT%20%3D%20%7Bdy%5Cover%20y%7D%20T
因此只要有 dx & x 或 dy & y 以及 T 就可以求出 s

減少流動性&回收LP token (求dx 及 dy)

s為回收得LP代幣量
https://chart.googleapis.com/chart?cht=tx&chl=dx%3D%7Bsx%5Cover%20T%7D
https://chart.googleapis.com/chart?cht=tx&chl=dy%3D%7Bsy%5Cover%20T%7D


上一篇
DEX & Defi ep.5
下一篇
實作簡易DEX ep.2
系列文
Web3新手初探筆記32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言